package uml.construct.builder;

/**
 * 建造者--抽象建造者<br>
 * on 2022/12/17 20:00
 */
public interface ActorBuilder {
    // 抽象出复杂对象各个部件的建造，并将每个部件的建造延迟到具体建造者内部
    void buildType();
    void buildSex();
    void buildFace();
    void buildHairStyle();
    void buildCustom();

    /**
     * 负责复杂对象的建造次序：将指挥者负责的任务封装到建造者内部
     */
    public default void build(){
        buildType();
        buildSex();
        buildFace();
        buildCustom();
        buildHairStyle();
    }

    /**
     * 提供获取复杂对象的接口
     * @return 复杂对象
     */
    Actor getActor();
}
